home *** CD-ROM | disk | FTP | other *** search
- Tutorium1 zum In_Go Reassembler
- - Starten Sie In_Go
- - Mit Amiga+"l" den Laderequester aufrufen
- Als Quelle sollte File eingeschaltet sein.
- - Klicken Sie `Lade...` an
- Es erscheint ein Requester `Lade ausführbares File/Objectfile`
- - Klicken Sie Das Fileauswahl-Gadget hinter Lade an und wählen Sie Tutorium1 an
- Bestätigen Sie den Asl Requester mit `Ok`
- Als Projectname sollte nun Tutorium1 erscheinen
- - Bestätigen Sie mit `Ok`
- Der `Lade ausführbares File/Objectfile` Requester verschwindet, der Ladevorgang hat begonnen,
- und ist sehr schnell beendet.
- Die Quell-Auswahl Gadgets und das `Lade...` Gadget werden nun Ghosted dargestellt.
- -Zur Übung Klicken Sie auf Data in Der Scroll-Box
- Es erscheint ein Requester der Sie auffordert das Segment zu definieren.
- -Sie Ändern jedoch nichts und klicken Cancel an
- Der Requester verschwindet
- -Klicken Sie nun `Ok` im Laderequester an
- Der Lade- Requester verschwindet.
- Es erscheint nun unaufgefordert der `Reassembler preferences` Requester
- -Klicken Sie `Suche indirekte Basen` an
- Es erscheint eine Zeile in der Scrollbox
- -Klicken Sie nun `Suche Link-Module` an
- Der Anzeigemodus hat sich automatisch geändert er ist nun `Pseudo a0-a6`
- Es erscheint wiederum eine Zeile in der Scrollbox, die aber einen anderen Aufbau hat
- als die Zeile vorher.
- -Verlassen Sie den Requester mit `Ok`
- Der Requester verschwindet, die Hauptanzeige wird voll sichtbar.
- Der Text ist nun überwiegend gelb es sind keine Library-aufrufe dekodiert
- -Drücken Sie nun `d`
- Die Code-interpretation verschwindet es wird nun ein Data-ähnlicher Text gezeigt.
- Dieser Text entspricht dem vorher gesehenen Code diesmal nur als Data interpretiert.
- -Drücken Sie nochmals `d`
- Nun erscheint der vorher gesehene Assemblertext wieder.
- -Drücken Sie nun `p` einmal.
- Auf der linken Seite erscheint nun die absolute Adresse der geladenen Quelle
- -Drücken Sie nun `p` nocheinmal
- Auf der linken Seite erscheint nun die relative Adresse der geladenen Quelle
- -Drücken Sie nun `p` nocheinmal
- Jegliche Adressangabe auf der linken Seite verschwindet wieder.
- -Starten Sie nun den Reassembler mit `Space` also der Leertaste.
- Die ersten beiden Zeilen erscheinen nun Schwarz und B=1 also 1 Codebereich ist entdeckt.
- -Drücken Sie nun wieder `d`
- Die ersten beiden Zeilen sind unverändert der Rest wird wiederum zu Data
- -Mit Hilfe der Kursortaste bewegen Sie die aktuelle Zeile, auf AL_0_4
- -Drücken Sie nun Taste `Amiga`+`j`
- Fast der gesammte Inhalt von Segment 0 ist reassembliert worden.
- die Aktuelle Zeile bleibt hinter dem reassemblierten Bereich stehen
- -Drücken Sie nun `0`
- Hier wird Marke `0` aufgerufen, da Sie aber bisher unbelegt ist wird der Anfang
- von Segment 0 angezeigt.
- Die absoluten Adressen im Operandenfeld sind nun verschwunden
- -Drücken Sie nun Amiga+shift+`$`
- In_Go liest nun alle amigatypischen Namen des Programmes ein..
- In der neunten Zeile erscheint nun `lea dosname(A4),D1`
- -Sehen Sie Sich die ersten Zeilen an. .
- -Schalten Sie mit `p` auf relative Zeilenadressanzeige (zweimal drücken !)
- Jetzt sollte die Zeilenadressanzeige `+$xxx` sichtbar sein.
- In Zeile `+$E` wird die ExecBase in eine Variable geschoben,
- soviel sollten Sie erkennen ...
- -Klicken Sie die Variable `L_1_86(A4)` an . . .
- Es erscheint der `Reassembler Hilfe` Requester
- -Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
- -Geben Sie `ExecBase` in genau dieser schreibweise ein, mit Return abschliesen.
- Stringgadgets in In_Go müssen immer mit Return verlassen werden !
- -Klicken Sie `Ok` an
- Jetzt erscheint die Hauptanzeige wieder, der symbolische Processor kann nun
- einige Library-Aufrufe erkennen.
- -Mit Hilfe der Kursortasten gehen Sie nun nach unten in Zeile `+$64`
- In Zeile `+$5C` - `+$68` kann man das Öffnen der Utility Library erkennen
- In Zeile `+$6C` wird die UtilityBase in eine lokale Variable abgespeichert.
- -Klicken Sie pS0_0(A5) an
- Es erscheint der `Reassembler Hilfe` Requester
- -Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
- -Geben Sie `UtilityBase` in genau dieser schreibweise ein, mit Return abschliesen.
- -Verlassen Sie den Reassemblerhilferequester mit der `Esc` Taste
- Nun kann der symbolische Processor auch diesen Aufruf dekodieren.
- An der Zeilenfärbung kann man erkennen Das es sich um einen Aufruf ab Kick 3.0 handelt.
- -Fahren Sie nun mit der Kursortaste bis ans Segmentende
- sie erkennen anhand der grün-schwarzen Zeile das hier eine Tabellen existiert
- Da sie noch nicht automatisch eingelesen ist vermuten Sie richtig
- >Es handelt sich hier um eine Tabelle die In_Go nicht automatisch einliest<
- -Fahren Sie mit dem Zeilenkursor auf Label `L_0_A4:`
- -Drücken Sie jetzt `t`
- Jetzt erscheint ein Requester mit vielen Einstell-Möglichkeiten
- -Klicken Sie Schalter `Der Tabellen Start` an
- In dem Stringausgabegadget dahinter sollte jetzt `L_0_A4` erscheinen.
- -Verlassen Sie den Requester mit `Ok`
-
- Den Folgenden Vorgang eventuell wiederhohlen !
- -Fahren Sie nun mit dem Zeilenkursor auf `+$AC`
- Wenn sie `+$AC` nicht finden nehmen Sie den naechsten kleineren Wert !
- -Drücken Sie jetzt `t`
- Jetzt erscheint der Tabelleneinleserequester wieder
- -Klicken Sie Schalter `Das Tabellen Ende` an
- In dem Stringausgabegadget dahinter erscheint jetzt die Absolute Adresse.
- An dieser Stelle befindet sich ja noch kein Label.
- -Stellen Sie am Gadget links oben "(@): {start+word[@]}: @+@+distance" ein
- Die Distanz sollte bereits auf 2 , "{}=" sollte `Sprunglabel` zeigen
- -Starten Sie das Einlesen der Tabelle mit `Lese Tabelle ein`
- -Verlassen Sie den Requester mit `Ok`
- in der Hauptanzeige erscheint nun die Tabelle
- Wenn Sie vorher +$AC` nicht gefunden haben Zurück zum Absatz
- -Drücken Sie nun `Space` (Leertaste)
- Es ertönnt mehrfach `Beep` das deutet auf einen Fehler hin !
- -Drücken Sie darum Taste `e`
- Taste `e` zeigt die Fehler einige dc.w s
- -Schalten sie im Processormenu auf 68020.
- Unsere Vermutung war richtig der Fehler war gar kein Fehler es handelte
- sich um nur für den 68020 er Processor lauffähigen Code
- Da In_Go beim `Fehler` die Reassemblierung an dieser Stelle abbricht haben wir dort
- jetzt unerkannter Code
- -Fahren Sie mit dem Zeilenkursor auf das Zeilenlabel darüber (+$B8)
- -Wählen Sie im Edit-Menü `Mache Code zu Data von AL an`
- Jetzt werden 3 Zeilen wieder überwiegend Gelb, Sie sind In_Go intern `DATA`
- Darum müssen wir erneut an dieser Stelle reassemblieren.
- -Gehen Sie Mit dem Zeilenkursor auf (+$B8)
- -Drücken Sie Amiga + `j`
- Nun hat In_Go diese Stelle bearbeitet, Sie ist als Code richtig erkannt
- -Bringen Sie Nun Zeile `+$9A` -`$A2 in die Anzeige (durch Kursor oder Scrollbalken )
- -Drücken Sie nun Shift + `L`
- Mit dieser Tastenfolge können Libraryaufrufe im sichtbaren Bereich automatisch benannt
- werden.
- In Zeile `+$9A` erscheint der Name `CloseLibrary_I` er wurde gelernt !
- -Bringen Sie Zeile +$BA bis +$B6 in die Anzeige
- -Wählen Sie `F10` (Die Funktionstaste)
- -Klicken Sie alle Möglichkeiten ein
- -Verlassen Sie den Requester mit OK
- Nun können wir einige Optimierungen richtung 68020 betrachten.
- -Durch drücken von `o` kann die Optimierung `getoggled` werden.
- -Wählen Sie nun `Erzeuge lokale Label` im Edit-Menu an.
- -Es erscheint ein roter Hinweis der jedoch bald wieder verschwindet.
- Es werden nun lokale Label angezeigt;
- Warum sind die Label ab Zeile +$C4 nicht lokal geworden ?
- Ein kleiner Trick von mir: in Segment 1 befindet sich ein Verweis
- auf Label +$C4 ;dies wurde von In_Go richtig erkannt.
- -Erzeugen Sie Nun durch Anwahl von `Speichere Textfile` im
- Aktion-Menü ein Assembler-Textfile
- - Erzeugen Sie Durch Anwahl von `Speichere Amigaguidefile` im
- Aktion-Menü ein Amigaguidefile des Tutoriums
- -Wählen Sie `Speichere ausführbares File`
- Hier können Sie je nach Wunsch das File ausführbar, mit Dreloc_32 Units.
- und oder mit den gefundenen Namen abspeichern.
- der Name wird mit `q` erweitert.
-
- Ende von Tutorium1
-
-